
// 集合关联

// 导入mongoose模块
const mongoose =require("mongoose");
// 用 mongoose.connect方法连接数据库：返回的值是promise对象
mongoose.connect("mongodb://localhost/playground3")
.then(()=>console.log("数据库链接成功"))
.catch(err=>console.log(err,"数据库连接失败"));
// 创建集合规则:调用mongoose.Schema这个构造函数创建实例对象（也是构造函数）
// 在 mongoose.Schema构造函数传入一个对象的参数

// 用户集合
const userSchema = new mongoose.Schema({
	author:String,
	age:Number,
	isPbulished:Boolean,

})
// 用上面创建的构造函数创建集合实例（也是构造函数）
const user = mongoose.model("User",userSchema);



// 文章集合
const postSchema = new mongoose.Schema({
	// 关联核心代码一：用文章集合的author和User集合建立关联
	author:{
		type:mongoose.Schema.Types.ObjectId,
		ref:"User",
	},
	title:String,
})

const post = mongoose.model("Post",postSchema);


// 创建文档

// user.create({age:18,author:"002",isPbulished:false})
// .then(result => {
// 	console.log(result)
// })
// .catch(error =>{
// 	console.log(error)
// })


// 关联核心代码一：用文章集合的author和User集合建立关联
// post.create({title:'文章标题二',author:"5eca91831bb951157cb4a8a4"})
// .then(result => {
// 	console.log(result)
// })
// .catch(error =>{
// 	console.log(error)
// })

// 关联核心代码二：关联查询
post.find({title:"文章标题二"}).populate("author").then(result=>{console.log((result))});